package com.ssmIntegration.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

/*

1、service
2、开启aop注解的支持（aspect）：@Before; @After; @AfterRunning; @AfterThrowing; @Around; @Aspect; @Order
3、tx声明式事务管理：
(1)、对应的事务管理器(TransactionManager)实现，实现有DataSource、Hibernate、jpa...；
(2)、开启事务注解支持@Transactional

 */
@Configuration
@ComponentScan({"com.ssmIntegration.service"})
// 开启aop注解支持
@EnableAspectJAutoProxy
// 开启事务注解支持
@EnableTransactionManagement
public class ServiceJavaConfig {

    @Bean
    public TransactionManager transactionManager(DataSource dataSource) {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }

}
